package com.hirisun.wicket.checkgroup;

import java.util.ArrayList;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Check;
import org.apache.wicket.markup.html.form.CheckGroup;
import org.apache.wicket.markup.html.form.CheckGroupSelector;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.PropertyModel;

import com.hirisun.domain.Person;

public class CheckGroupPage extends WebPage {
	
	  /**
     * Constructor
     */
    public CheckGroupPage()
    {
        final CheckGroup<Person> group = new CheckGroup<Person>("group", new ArrayList<Person>());
        final CheckGroup<Person> group2 = new CheckGroup<Person>("group2", new ArrayList<Person>());
        Form<?> form = new Form<Void>("form")
        {
            @Override
            protected void onSubmit()
            {
                info("selection 1 person(s): " + group.getDefaultModelObjectAsString());
                info("selection 2 person(s): " + group2.getDefaultModelObjectAsString());
            }
        };

        add(form);
        form.add(group);
        group.add(group2);

        group2.add(new CheckGroupSelector("groupselector", group));
        group2.add(new CheckGroupSelector("groupselector2", group2));
        ListView<Person> persons = new ListView<Person>("persons",
            ComponentReferenceApplication.getPersons())
        {

            @Override
            protected void populateItem(ListItem<Person> item)
            {
                item.add(new Check<Person>("checkbox", item.getModel(), group));
                item.add(new Check<Person>("checkbox2", item.getModel(), group2));
                item.add(new Label("name",
                    new PropertyModel<String>(item.getDefaultModel(), "name")));
                item.add(new Label("lastName", new PropertyModel<String>(item.getDefaultModel(),
                    "lastName")));
            }

        };

        group2.add(persons);

        add(new FeedbackPanel("feedback"));
    }
}
